#ifndef UDP_COMMUNICATION_HPP
#define UDP_COMMUNICATION_HPP

#include <asio.hpp>  // 引入 ASIO 库
#include <iostream>   // 引入输入输出流
#include <string>     // 引入字符串库

using asio::ip::udp;  // 使用 UDP 协议

// UDP 通信客户端类声明
class UDPCommunicationClient {
public:
    // 构造函数，传入 I/O 上下文、本地端口和目标 IP:Port
    UDPCommunicationClient(asio::io_context& io_context, unsigned short local_port, const std::string& target_ip, unsigned short target_port);

    // 启动通信
    void start();

private:
    asio::io_context& io_context_;  // ASIO I/O 上下文
    udp::socket socket_;            // UDP 套接字
    udp::endpoint target_endpoint_; // 目标端点（B 的地址）
    udp::endpoint local_endpoint_;  // 本地端点（A 的地址）

    // 发送消息到目标
    void send_message(const std::string& message);

    // 接收消息
    void receive_message();
};

#endif // UDP_COMMUNICATION_HPP
